#define  _CRT_SECURE_NO_WARNINGS 1
//#include <iostream>
//using namespace std;
//struct S 
//{
//	int id;
//	int score1;
//	int score2;
//	
//	double total()
//	{
//		return score1 * 0.7 + score2 * 0.3;
//		
//	}
//	double xuesu()
//	{
//		return score1 + score2;
//		
//	}
//};
//void judge(struct S s)
//{
//	if (s.xuesu() > 140 && s.total() >= 80)
//	    cout << "Excellent" << endl;
//	else
//	    cout << "Not excellent" << endl;
//}
//int main()
//{
//	int n = 0;
//	struct S s = {0};
//	cin >> n;
//	while(n--)
//	{
//		cin >> s.id >> s.score1 >> s.score2;
//		judge(s);
//	}
//	
//	return 0;
//}













//#include <iostream>
//using namespace std;
//struct S
//{
//	int id;
//	int score1;
//	int score2;
//	
//    double total()
//   {
//	     return score1 * 0.7 + score2 * 0.3;
//
//   }  
//    double xuesu()
//   {
//	    return score1 + score2;
//   }
//};
//void judge(struct S s)
//{
//	if (s.total() >= 80 && s.xuesu() > 140)
//	    cout << "Excellent" << endl;
//	else
//	    cout <<"Not excellent" << endl;
//}
//
//int main()
//
//{
//	int n = 0;
//	cin >> n;
//	struct S s = {0};
//	while(n--)
//	{
//		cin >> s.id >> s.score1 >> s.score2;
//		judge(s);
//	} 
//	
//	return 0;
//}

//#include <iostream>
//#include <string>
//using namespace std;
//
//struct S
//{
//	int score;
//	string name;
//	
//}s;
//int main()
//{
//	int n = 0;
//	cin >> n;
//	struct S max = {0, ""};
//	cin >> max.score >> max.name;
//	n--;
//	while (n--)
//	{
//		cin >> s.score >> s.name;
//		if (s.score > max.score)
//	    {
//		    max.score = s.score;
//		    max.name = s.name;
//	    }
//	
//	}
//	cout << max.name << endl;
//	return 0;
//}

//#include <iostream>
//#include <string>
//using namespace std;
//struct S
//{
//	int score;
//	string name;
//}s;
//int main()
//{
//	int n = 0;
//	cin >> n;
//	struct S max;
//	cin >> max.score >> max.name;
//	n--;
//	while(n--)
//	{
//		cin >> s.score >> s.name;
//		if (s.score > max.score)
//	        max = s;
//	}
//	cout << max.name << endl;
//	return 0;
//	
//}




//#include <iostream>
//#include <string>
//#include <algorithm>
//using namespace std;
//const int N = 110;
//
//struct S
//{
//	int score;
//	string name;
//}arr[N];
//
//bool cmp(struct S s1, struct S s2)
//{
//	return s1.score > s2.score;
//}
//
//int main()
//{
//	int n = 0;
//	cin >> n;
//	for(int i = 0; i < n; i++)
//	{
//		cin >> arr[i].score >> arr[i].name;
//	}
//	sort(arr, arr+ n, cmp);
//    cout << arr[0].name << endl;
//	
//	
//	return 0;
//}



//#include <iostream>
//#include <string>
//#include <algorithm>
//using namespace std;
//const int N = 110;
//struct S
//{
//	int score;
//	string name;
//}arr[N];
//bool cmp(struct S s1, struct S s2)
//{
//	return s1.score > s2.score;
//}
//int main()
//{
//	int n = 0;
//	cin >> n;
//	for (int i = 0; i < n; i++)
//	{
//		cin >> arr[i].score >> arr[i].name; 
//	}
//	sort(arr, arr+ n, cmp);
//	cout << arr[0].name << endl;
//	return 0;
//}


//#include <iostream>
//using namespace std;
//struct S
//{
//	string name;
//	double t;
//	int flag;
//}s;
//int main()
//{
//	int n = 0;
//	int cnt = 0;
//	cin >> n;
//	while(n--)
//	{
//		cin >> s.name >> s.t >> s.flag;
//		if (s.t >= 37.5 && s.flag == 1)
//		{
//			cout << s.name << endl;
//			cnt++;
//		}
//	}
//	cout << cnt << endl;
//	
//	return 0;
//}


//#include <iostream>
//#include <algorithm>
//using namespace std;
//const int N = 100;
//int arr[N]; 
//
//struct Cmp
//{
//	bool operator()(int a, int b)
//	{
//		return a > b;
//	}
//}cmp;
//int main()
//{
//	int n = 0;
//	cin >> n;
//	for(int i = 0; i < n; i++)
//	{
//		cin >> arr[i];
//		
//	}
//	sort(arr, arr+n, cmp);
//	for(int i = 0; i < 5; i++)
//	{
//		cout << arr[i] << " ";
//	}
//	
//	return 0;
//}
//


//#include <iostream>
//#include <algorithm>
//using namespace std;
//const int N = 350;
//
//
//struct S
//{
//	int chinese;
//	int math;
//	int english;
//	int id;
//	int total;
//}arr[N];
//
//
//bool cmp(struct S s1, struct S s2)
//{
//	if (s1.total != s2.total)
//	    return s1.total > s2.total;
//	else if(s1.chinese != s2.chinese)
//	    return s1.chinese > s2.chinese;
//	else
//	    return s1.id < s2.id;
//}
//
//int main()
//{
//	int n = 0;
//	cin >>n;
//	for (int i = 1; i <= n; i++)
//	{
//		cin >> arr[i].chinese >> arr[i].math >> arr[i].english;
//		arr[i].id = i;
//		arr[i].total = arr[i].chinese + arr[i].math + arr[i].english;
//	}
//	sort(arr+1, arr+1+n, cmp);
//	for (int i = 1; i <= 5; i++)
//	{
//		cout << arr[i].id <<" " << arr[i].total << endl;
//	}
//	
//	return 0;
//}
//


#include <iostream>
#include <algorithm>
using namespace std;
const int N = 200;

struct S
{
	string name;
	int y;
	int m;
	int d;
	int id;
}arr[N];

bool cmp(struct S& s1, struct S& s2)
{
	if (s1.y != s2.y)
		return s1.y < s2.y;
	else if (s1.m != s2.m)
		return s1.m < s2.m;
	else if (s1.d != s2.d)
		return s1.d > s2.d;
	else
		return  s1.id > s2.id;
}

int main()
{
	int n = 0;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		cin >> arr[i].name >> arr[i].y >> arr[i].m >> arr[i].d;
		arr[i].id = i;
	}
	sort(arr, arr + n, cmp);
	for (int i = 0; i < n; i++)
	{
		cout << arr[i].name << endl;
	}
	return 0;
}

